/**
 * version 2.4.0
 * 通用js方法封装处理
 * Copyright (c) 2018 snow
 */
(function ($) {
    $.extend({
        getErrorGroupByProjectId: function(projectId,responseHandler){

            if($.common.isEmpty(projectId)){
               return;
            }
            var config = {
                url: "/module/project/getErrorGroupByProjectId/"+projectId,
                type: "post",
                dataType: "json",
                data: {projectId: projectId},
                success: function(result) {
                    console.log("getErrorGroupByProjectId=",result);
                    responseHandler(result);
                }
            };
            $.ajax(config)
        },
        snowBootstrap:{
            init:function(idTemp){
                this._tableId=$.common.isEmpty(idTemp)?this.defaultConfig.tableId:idTemp;
                return this;
            },
            defaultConfig:{
                tableId:"bootstrap-table",
                sortOrder:"asc",
                sortName: undefined,
                // 查询条件
                queryParams: function(params) {
                    return {
                        // 传递参数查询参数
                        pageSize:       params.limit,
                        pageNum:        params.offset / params.limit + 1,
                        searchValue:    params.search,
                        orderByColumn:  params.sort,
                        isAsc:          params.order
                    };
                },
            },
            _sortOrder:"",
            _sortName:"",
            _option:{},
            _params:{},
            //默认ID名称
            _tableId:"",
            _bootStrapTable: undefined,
            tableInit: function(options){
                this._option = options;
                this._params = $.common.isEmpty(options.queryParams) ? this.defaultConfig.queryParams : options.queryParams;
                // this._tableId=$.common.isEmpty(idTemp)?defaultConfig.tableId:idTemp;
                this._sortOrder = $.common.isEmpty(options.sortOrder) ? this.defaultConfig.sortOrder : options.sortOrder;
                this._sortName = $.common.isEmpty(options.sortName) ? this.defaultConfig.sortName : options.sortName;
                this._bootStrapTable= $('#'+this._tableId);
                this._bootStrapTable.bootstrapTable({
                    url: options.url,                                   // 请求后台的URL（*）
                    contentType: "application/x-www-form-urlencoded",   // 编码类型
                    method: 'post',                                     // 请求方式（*）
                    cache: false,                                       // 是否使用缓存
                    sortable: true,                                     // 是否启用排序
                    sortStable: true,                                   // 设置为 true 将获得稳定的排序
                    sortName: this._sortName,                                // 排序列名称
                    sortOrder: this._sortOrder,                              // 排序方式  asc 或者 desc
                    pagination: $.common.visible(options.pagination),   // 是否显示分页（*）
                    pageNumber: 1,                                      // 初始化加载第一页，默认第一页
                    pageSize: 10,                                       // 每页的记录行数（*）
                    pageList: [10, 25, 50],                             // 可供选择的每页的行数（*）
                    iconSize: 'outline',                                // 图标大小：undefined默认的按钮尺寸 xs超小按钮sm小按钮lg大按钮
                    toolbar: '#toolbar',                                // 指定工作栏
                    sidePagination: "server",                           // 启用服务端分页
                    search: $.common.visible(options.search),           // 是否显示搜索框功能
                    showRefresh: $.common.visible(options.showRefresh), // 是否显示刷新按钮
                    showColumns: $.common.visible(options.showColumns), // 是否显示隐藏某列下拉框
                    showToggle: $.common.visible(options.showToggle),   // 是否显示详细视图和列表视图的切换按钮
                    showExport: $.common.visible(options.showExport),   // 是否支持导出文件
                    queryParams: this._params,                       // 传递参数（*）
                    columns: options.columns,                           // 显示列信息（*）
                    responseHandler: this.responseHandler            // 回调函数
                });

            },
            treeTableInit: function(options){
                console.log("aaa001");
                this._option = options;
                this._params = $.common.isEmpty(options.queryParams) ? this.defaultConfig.queryParams : options.queryParams;
                // this._tableId=$.common.isEmpty(idTemp)?defaultConfig.tableId:idTemp;
                this._sortOrder = $.common.isEmpty(options.sortOrder) ? this.defaultConfig.sortOrder : options.sortOrder;
                this._sortName = $.common.isEmpty(options.sortName) ? this.defaultConfig.sortName : options.sortName;
                this._bootStrapTable= $('#'+this._tableId);
                this._bootStrapTable.bootstrapTable({
                    url: options.url,                                   // 请求后台的URL（*）
                    //设置为 true 会有隔行变色效果。
                    // bootstrap v3.3.6 版本.table-striped不起作用,需要在html中加入 css
            //         <style type="text/css">
            // .table-striped > tbody > tr:nth-of-type(odd) {
            //         background-color: #f9f9f9;
            //     }
            // .table-striped-warner > tbody > tr:nth-of-type(odd) {
            //         background-color: #cbc8c7;
            //     }
            // </style>
            //         striped:true,
                    sidePagenation:'server',
                    idField:options.idField,
                    contentType: "application/x-www-form-urlencoded",   // 编码类型
                    method: 'post',                                     // 请求方式（*）
                    // cache: false,                                       // 是否使用缓存
                    // sortable: true,                                     // 是否启用排序
                    // sortStable: true,                                   // 设置为 true 将获得稳定的排序
                    // sortName: this._sortName,                                // 排序列名称
                    // sortOrder: this._sortOrder,                              // 排序方式  asc 或者 desc
                    // pagination: $.common.visible(options.pagination),   // 是否显示分页（*）
                    // pageNumber: 1,                                      // 初始化加载第一页，默认第一页
                    // pageSize: 10,                                       // 每页的记录行数（*）
                    // pageList: [10, 25, 50],                             // 可供选择的每页的行数（*）
                    // iconSize: 'outline',                                // 图标大小：undefined默认的按钮尺寸 xs超小按钮sm小按钮lg大按钮
                    // toolbar: '#toolbar',                                // 指定工作栏
                    sidePagination: "server",                           // 启用服务端分页
                    // search: $.common.visible(options.search),           // 是否显示搜索框功能
                    // showRefresh: $.common.visible(options.showRefresh), // 是否显示刷新按钮
                    // showColumns: $.common.visible(options.showColumns), // 是否显示隐藏某列下拉框
                    // showToggle: $.common.visible(options.showToggle),   // 是否显示详细视图和列表视图的切换按钮
                    // showExport: $.common.visible(options.showExport),   // 是否支持导出文件
                    // queryParams: this._params,                       // 传递参数（*）
                    columns: options.columns,                           // 显示列信息（*）
                    // responseHandler: this.responseHandler,           // 回调函数
                    treeShowField: options.treeShowField,
                    parentIdField: options.parentIdField,
                    onLoadSuccess: options.onLoadSuccess
                });

            },

            // 请求获取数据后处理回调函数
            responseHandler: function(res) {
                if (res.code == 0) {
                    return { rows: res.rows, total: res.total };
                } else {
                    $.modal.alertWarning(res.msg);
                    return { rows: [], total: 0 };
                }
            },
            // 查询选中列值
            selectColumns: function(column) {
                return $.map($('#'+this._tableId).bootstrapTable('getSelections'), function (row) {
                    return row[column];
                });
            },
            // 查询选中首列值
            selectFirstColumns: function() {
                var temp=this;
                return $.map($('#'+this._tableId).bootstrapTable('getSelections'), function (row) {
                    return row[temp._option.columns[1].field];
                });
            },
            // 操作封装处理
            // 提交数据
            operateSubmit: function(url, type, dataType, data) {
                var temp=this;
                    $.modal.loading("正在处理中，请稍后...");
                    var config = {
                        url: url,
                        type: type,
                        dataType: dataType,
                        data: data,
                        success: function(result) {
                            temp.operateAjaxSuccess(result);
                        }
                    };
                    $.ajax(config)
                },
            // 刷新
            refresh: function(idTemp) {
                $("#"+this._tableId).bootstrapTable('refresh', {
                    url: this._option.url,
                    silent: true
                });
            },
            // 添加信息
            operateAdd: function(id,parentId) {
                console.log(id)
                var idTemp=$.common.isEmpty(id)?"":id;
                var parentIdTemp=$.common.isEmpty(parentId)?"":parentId;
                var url =  this._option.createUrl.replace("{id}", idTemp).replace("{parentId}",parentIdTemp);

                $.modal.open("添加" + this._option.modalName, url);
            },
            // 修改信息
            operateEdit: function(id) {
                var url = this._option.updateUrl.replace("{id}", id);
                $.modal.open("修改" + this._option.modalName, url);
            },
            // 删除信息
            operateRemove: function(uniqueId) {
                var temp=this;
                $.modal.confirm("确定删除该条" + this._option.modalName + "信息吗？", function() {
                    var url = $.common.isEmpty(uniqueId) ? temp._option.removeUrl : temp._option.removeUrl.replace("{id}", uniqueId);
                    var data = { "ids": uniqueId };
                    temp.operateSubmit(url, "post", "json", data);
                });
            },
            // 保存结果弹出msg刷新table表格
            operateAjaxSuccess: function (result) {
                if (result.code == web_status.SUCCESS) {
                    $.modal.msgSuccess(result.msg);
                    this.refresh();
                } else {
                    $.modal.alertError(result.msg);
                }
                $.modal.closeLoading();
            },
            operate: {
                // post请求传输
                post: function(url, data) {
                    $.operate.submit(url, "post", "json", data);
                },
                // 批量删除信息
                removeAll: function(idTemp) {
                    var tableId=$.common.isEmpty(idTemp)?"bootstrap-table":idTemp
                    var rows = $.common.isEmpty($.table._option[tableId].id) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option[tableId].id);
                    if (rows.length == 0) {
                        $.modal.alertWarning("请至少选择一条记录");
                        return;
                    }
                    $.modal.confirm("确认要删除选中的" + rows.length + "条数据吗?", function() {
                        var url = $.table._option[tableId].removeUrl;
                        var data = { "ids": rows.join() };
                        $.operate.submit(url, "post", "json", data);
                    });
                },
                // 添加信息 全屏
                addFull: function(id,idTemp) {
                    var tableId=$.common.isEmpty(idTemp)?"bootstrap-table":idTemp
                    var url = $.common.isEmpty(id) ? $.table._option[tableId].createUrl : $.table._option[tableId].createUrl.replace("{id}", id);
                    $.modal.openFull("添加" + $.table._option[tableId].modalName, url);
                },
                // 修改信息 全屏
                editFull: function(id,idTemp) {
                    var tableId=$.common.isEmpty(idTemp)?"bootstrap-table":idTemp
                    var url = $.table._option[tableId].updateUrl.replace("{id}", id);
                    $.modal.openFull("修改" + $.table._option[tableId].modalName, url);
                },
                // 保存信息
                save: function(url, data) {
                    $.modal.loading("正在处理中，请稍后...");
                    var config = {
                        url: url,
                        type: "post",
                        dataType: "json",
                        data: data,
                        success: function(result) {
                            $.operate.saveSuccess(result);
                        }
                    };
                    $.ajax(config)
                },
                // 保存结果提示msg
                saveSuccess: function (result) {
                    if (result.code == web_status.SUCCESS) {
                        $.modal.msgReload("保存成功,正在刷新数据请稍后……", modal_status.SUCCESS);
                    } else {
                        $.modal.alertError(result.msg);
                    }
                    $.modal.closeLoading();
                }
            },
        }
    });
})(jQuery);


/** 消息状态码 */
web_status = {
    SUCCESS: 0,
    FAIL: 500
};

/** 弹窗状态码 */
modal_status = {
    SUCCESS: "success",
    FAIL: "error",
    WARNING: "warning"
};
